/*
 * @Author: 王雁鹏
 * @Date: 2023-04-25 23:59:14
 * @LastEditTime: 2023-04-25 23:59:22
 * @LastEditors: 
 * @Description: 
 * @FilePath: \express\utils\jiaoyan.js
 * -------------------------------------
 */
const { decode } = require('./encode')
module.exports = async function (ctx, next) {
    const sessionKey = ctx.get('x-session')
    const { id, timespan } = decode(sessionKey)
    // 查找数据库中是否存在该 openid，返回是一个数组，如果不存在则返回[]
    const targetList = await getOpenid(id)
    if (targetList.length > 0) {
        // 如果超过设定的过期时间，标记isExpired字段为登陆过期
        const oneHour = 1000 * 60 * 60 * 24
        if (Date.now() - timespan > oneHour) {
            ctx.state.isExpired = true
            // 跟前台约定，如果code=2说明登陆过期跳登陆页面
            handle(ctx, '', 2, '登陆过期')
        } else {
            handle(ctx, '', 0, '登陆成功')
        }
    } else {
        // 通过ctx.throw可以直接抛出错误
        ctx.throw(401, '登陆失败')
    }